14 读取Excel文件
14.1 引言Excel在金融数据交换中的地位
尽管Python和数据库在金融分析中日益重要,Excel仍然是: - 数据交换: 数据源和报告的标准格式 - 人工输入: 交易员和分析师的常用工具 - 遗留系统: 许多老系统仍使用Excel
14.2 read_excel函数
# 注:stores.xlsx数据文件本地没有,但平台已经内置
# =============================================================================
# 题目:使用read_excel读取Excel文件
# =============================================================================
# 本示例演示如何从Excel文件读取特定工作表和数据范围
# 金融应用:读取交易所提供的股票行情数据、财务报表Excel文件等
# ==================== 导入库 ====================
import pandas as pd # 导入Pandas库,用于读取和处理Excel数据
# ==================== 基础读取Excel ====================
# 读取Excel文件的特定工作表和数据范围
df = pd.read_excel(
"stores.xlsx", # Excel文件路径(可以是相对路径或绝对路径)
sheet_name="2019", # 指定工作表名称(可以是名称字符串或索引数字)
skiprows=1, # 跳过前1行(常用于跳过标题行或说明行)
usecols="B:F" # 只读取B列到F列(可用字母范围或列名列表)
)
# 返回:包含读取数据的DataFrame对象
print("数据框信息:") # 打印提示信息
print(df.info()) # 显示DataFrame的详细信息(列名、数据类型、非空值数量等)参数详解: - sheet_name: 工作表名或索引 - skiprows: 跳过的行数 - usecols: 读取的列(字母或列名列表) - dtype: 指定列的数据类型 - converters: 列转换函数字典
14.3 数据类型转换
# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
# 注:stores.xlsx数据文件本地没有,但平台已经内置
import pandas as pd # 导入Pandas数据分析库
df = pd.read_excel("stores.xlsx",sheet_name="2019", skiprows=1, usecols="B:F") # 从Excel文件读取数据存入df
print(df.info()) # 输出数据框基本信息
def fix_missing(x): # 定义函数fix_missing
return False if x in ["", "MISSING"] else x # 返回计算结果
# 从Excel文件读取数据存入df2
df2 = pd.read_excel("stores.xlsx",sheet_name="2019", skiprows=1, usecols="B:F",converters={"Flagship": fix_missing})
print(df2.info()) # 输出数据框基本信息
print(df2) # 输出数据框数据
with pd.ExcelFile("stores.xlsx") as f: # 使用上下文管理器
# 从Excel文件读取数据存入data1
data1 = pd.read_excel(f, "2019", skiprows=1, usecols="B:F", nrows=2,converters={"Flagship": fix_missing})
# 从Excel文件读取数据存入data2
data2 = pd.read_excel(f, "2020", skiprows=1, usecols="B:F", nrows=2,converters={"Flagship": fix_missing})
print(data1) # 输出数据数据14.4 ExcelFile类高效读取多表
# 注:stores.xlsx数据文件本地没有,且fix_missing函数定义于上方平台任务代码块中
# =============================================================================
# 题目:使用ExcelFile类高效读取多个工作表
# =============================================================================
# 本示例演示使用ExcelFile类一次性打开文件并读取多个工作表
# 金融应用:读取同一Excel文件中的多年财务数据、多个子公司的报表等
# ==================== 使用with语句打开Excel文件 ====================
# 使用ExcelFile类打开文件(提高多次读取效率)
with pd.ExcelFile("stores.xlsx") as f:
# with语句确保文件在使用后自动关闭,释放系统资源
# f是ExcelFile对象,代表已打开的Excel文件
# ==================== 读取2019年数据 ====================
# 读取2019年工作表的前2行数据
data1 = pd.read_excel(
f, # 传入已打开的ExcelFile对象,而非文件路径
"2019", # 工作表名称
skiprows=1, # 跳过第1行
usecols="B:F", # 读取B到F列
nrows=2, # 只读取前2行数据(用于快速预览或测试)
converters={"Flagship": fix_missing} # 应用转换函数
)
# nrows参数常用于:数据预览、限制读取量、测试数据格式等
# ==================== 读取2020年数据 ====================
# 读取2020年工作表的前2行数据
data2 = pd.read_excel(
f, # 复用同一个ExcelFile对象,避免重复打开文件
"2020", # 工作表名称
skiprows=1, # 跳过第1行
usecols="B:F", # 读取B到F列
nrows=2, # 只读取前2行
converters={"Flagship": fix_missing} # 应用转换函数
)
# ==================== 显示读取结果 ====================
print("2019年前2行:") # 打印提示信息
print(data1) # 显示2019年数据
print(f"\n2020年前2行:") # 打印提示信息(带换行)
print(data2) # 显示2020年数据优势: - 只打开文件一次 - 适合读取多个工作表 - 自动管理文件句柄